package Soligee.model.vo.cadastros;

import Soligee.model.vo.lancamentos.VendaVO;
import java.io.Serializable;
import java.util.Date;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="parcelavenda")
public class ParcelaVendaVO implements Serializable {

    @Id
    @SequenceGenerator( name = "cod_parcela", sequenceName = "cod_parcela_seq" ,allocationSize = 1)
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator="cod_parcela")
    @Column(name="cod_parcela", nullable = false)
    private int codParcelaVenda;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="cod_venda", insertable=true, updatable=true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private VendaVO venda;

    @Column (name="valor_parcela", nullable = false)
    private double valorParcela;

    @Column (name="num_parcela", nullable = false)
    private int numParcela;

    @Column (name="num_de_parcelas", nullable = false)
    private int numeroDeParcelas;

    @Column (name="situacao", nullable = false)
    private int situacao;
    
    @Column(name = "data_vencimento")
    @Temporal(TemporalType.DATE)
    private Date dataVencimento;

    public ParcelaVendaVO() {
    }

    public ParcelaVendaVO(int codParcelaVenda, VendaVO venda, double valorParcela, int numParcela, int numeroDeParcelas, int situacao, Date dataVencimento) {
        this.codParcelaVenda = codParcelaVenda;
        this.venda = venda;
        this.valorParcela = valorParcela;
        this.numParcela = numParcela;
        this.numeroDeParcelas = numeroDeParcelas;
        this.situacao = situacao;
        this.dataVencimento = dataVencimento;
    }

    public int getCodParcelaVenda() {
        return codParcelaVenda;
    }

    public void setCodParcelaVenda(int codParcelaVenda) {
        this.codParcelaVenda = codParcelaVenda;
    }

    public Date getDataVencimento() {
        return dataVencimento;
    }

    public void setDataVencimento(Date dataVencimento) {
        this.dataVencimento = dataVencimento;
    }

    public int getNumParcela() {
        return numParcela;
    }

    public void setNumParcela(int numParcela) {
        this.numParcela = numParcela;
    }

    public int getNumeroDeParcelas() {
        return numeroDeParcelas;
    }

    public void setNumeroDeParcelas(int numeroDeParcelas) {
        this.numeroDeParcelas = numeroDeParcelas;
    }

    public int getSituacao() {
        return situacao;
    }

    public void setSituacao(int situacao) {
        this.situacao = situacao;
    }

    public double getValorParcela() {
        return valorParcela;
    }

    public void setValorParcela(double valorParcela) {
        this.valorParcela = valorParcela;
    }

    public VendaVO getVenda() {
        return venda;
    }

    public void setVenda(VendaVO venda) {
        this.venda = venda;
    }
}
